home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_200 / 261_01 / as68.h < prev    next >
Text File  |  1988-02-23  |  6KB  |  201 lines

  1. /* as68.h - header file for as68 assembler
  2.  */
  3.  
  4. /*    (C) Copyright 1982 Steve Passe      */
  5. /*    All Rights Reserved            */
  6.  
  7. /* version 1.00 */
  8. /* version 1.01
  9.  *  8/30/83 ver. 1.01 modified for Aztec ver. 1.05g smp
  10.  */
  11.  
  12. /* statement field types */
  13.  
  14. #define    MNEMONIC    2
  15. #define    PSEUDO        3
  16. #define    OPERAND        4
  17. #define    OPRND_1        5
  18. #define    OPRND_2        6
  19. #define    COMMENT        7
  20. #define    MACRO        8
  21.  
  22. /* error report numbers    */
  23.  
  24. #define    PREPARSE    -101    /* statement preparse error */
  25. #define    BAD_INSTR    -102    /* bad char in mnemonic-psdo field */
  26. #define    UNREC_INSTR    -103    /* instr not found in mnem or pseudo table */
  27. #define    BAD_MACRO    -104    /* bad char in macro field */
  28. #define    UNREC_MACRO    -105    /* macro not found in macro table(s) */
  29. #define    LABEL_USE    -106    /* improper use of label */
  30. #define    OPRND_EVAL    -107    /* can't evaluate operand */
  31. #define    EQU_EVAL    -108    /* can't evaluate equ operand */
  32. #define    SET_EVAL    -109    /* can't evaluate set operand */
  33. #define    REDEF        -110    /* attempt to redefine a permanent symbol */
  34. #define    SYMTFULL    -111    /* symbol table full */
  35. #define    UNREC_OPRND    -112    /* unrecognized    operand    */
  36. #define    UNDEF_SYMBOL    -113    /* symbol not defined in symbol table */
  37. #define    LBL_RANGE    -114    /* label out of range for current add. mode */
  38. #define    ILGL_OP1    -115    /* op 1 is not valid for instruction type */
  39. #define    ILGL_OP2    -116    /* op 2 is not valid for instruction type */
  40. #define    BAD_OP1        -117    /* op 1 is not correctly formed */
  41. #define    BAD_OP2        -118    /* op 2 is not correctly formed */
  42. #define    CODE_BUILD    -119    /* code building function failed */
  43.  
  44. /* bit fiddle error types */
  45.  
  46. #define    ERR_BBB        -120
  47. #define    ERR_BX3        -121
  48. #define    ERR_BX5        -122
  49. #define    ERR_BX        -123
  50. #define    ERR_CCC        -124
  51. #define    ERR_DDD        -125
  52. #define    ERR_RXS        -126
  53. #define    ERR_MK        -127
  54. #define    ERR_EFGHJ    -128
  55. #define    ERR_F        -129
  56. #define    ERR_G        -130
  57. #define    ERR_H        -131
  58. #define    ERR_J        -132
  59. #define    ERR_V        -133
  60. #define    ERR_XXX        -134
  61. #define    ERR_XX        -135
  62. #define    ERR_XXXX    -136
  63. #define    ERR_OYZ        -137
  64. #define    ERR_Y        -138
  65. #define    ERR_OY        -139
  66. #define    ERR_YY        -140
  67. #define    ERR_YYZZ    -141
  68. #define    ERR_D16        -142
  69. #define    ERR_D8I        -143
  70. #define    INCL_OPEN    -144
  71. #define PHASE        -145
  72.  
  73. #define MAXERR        10        /* max # errors per line */
  74.  
  75. /* commands to _out files */
  76.  
  77. #define    CODE    1
  78. #define    DATA    2
  79. #define    MDATA    3
  80. #define    FLUSH    4
  81. #define    MSG    5
  82. #define    OPEN    6
  83. #define    CLOSE    7
  84. #define    SYNC    8
  85.  
  86. /* object size definitions */
  87.  
  88. #define    MTSIZE        205
  89. #define    SYMTSIZE    8000        /* size of symbol table in bytes */
  90. #define    FNAME_SIZE    15        /* max chars in a file name string */
  91. #define    STMNT_SIZE    140        /* chars in a statement    line */
  92. #define    SRCLEVELS    8        /* levels of nesting of source files */
  93.  
  94. /* pseudo-op table class masks */
  95.  
  96. #define    NO_LABEL 0x01
  97.  
  98. /* mnemonic table class masks */
  99.  
  100.  
  101. /* symbol table class masks */
  102.  
  103. #define    PERMANENT    0x01
  104. #define    RELOCATABLE    0x02
  105.  
  106. /* misc. */
  107.  
  108. #define    FLAG        char
  109. #define    YES        1
  110. #define    NO        0
  111. #define TRUE        1
  112. #define FALSE        0
  113. #define    OK        0
  114. #define    ERROR        -1
  115.  
  116. #define    CURR_DISK   25
  117.  
  118. /* defines for operand typing, mvalue table */
  119.  
  120. #define    _imd        0x01    /* 0-31 bits of immediate data */
  121. #define    _an        0x02    /* address register where n == 0-7 */
  122. #define    _dn        0x03    /* data register where n == 0-7 */
  123. #define    _ccr        0x04    /* cond. code reg., low byte of status reg. */
  124. #define    _sr        0x05    /* status register, 6 bits */
  125. #define    _usp        0x06    /* user stack pointer, another name for a7 */
  126. #define    _reglst        0x07    /* list of an and/or dn. range: xn-xn,
  127.                 '/' separating individual reg. specifiers. */
  128. #define    _none        0x08
  129.  
  130. #define    _sp        0x09    /* another name for a7 */
  131. #define    _anw        0x0a    /* address register where n == 0-7 */
  132. #define    _anl        0x0b    /* address register where n == 0-7 */
  133. #define    _dnw        0x0c    /* data register where n == 0-7 */
  134. #define    _dnl        0x0d    /* data register where n == 0-7 */
  135. #define    _pc        0x0e
  136. #define    _an_inx        0x0f
  137.  
  138. #define    _pd_ani        0x31    /* add. reg. indirect with predecrement    */
  139. #define    _ani_pi        0x32    /* add. reg. indirect with postincrement */
  140. #define    _ani        0xf3    /* address register indirect */
  141. #define    _d16_ani    0xf4    /* add. reg. indirect with displacement    */
  142. #define    _d8_anx        0xf5    /* add. reg. ind. with displ. and index */
  143. #define    _address    0xf6    /* address */
  144. #define    _label        0x57    /* address label */
  145. #define    _labeli        0x58    /* address label, indexed */
  146.  
  147. #define    _sadr        0x10    /* effective address: */
  148. #define    _dadr        0x20    /* effective address: */
  149. #define    _jadr        0x40    /* effective address: */
  150. #define    _madr        0x80    /* effective address: */
  151.  
  152. /*
  153.  *  the op eval structure:
  154.  */
  155.  
  156. struct _oprnd {
  157.     int _typ;                /* operand type */
  158.     unsigned char _reg;          /* register # if present */
  159.     unsigned char _regtyp;        /* type of reg., a or d */
  160.     unsigned char _ireg;         /* index reg. # if present */
  161.     unsigned char _iregtyp;        /* type of index reg., a or d */
  162.     FLAG _inxl;             /* short or long index value */
  163.     FLAG _rel_lbl;            /* relative label forced (* op) */
  164.     int _displ;                /* displacement    if present */
  165.     unsigned _reg_list;            /* reg. list if present    */
  166.     FLAG _long_val;            /* data is long if TRUE */
  167.     long _data;             /* immediate data if present */
  168.     long _addr;             /* address if present */
  169. };
  170.  
  171. struct _mtable {
  172.     char _mnem[8];        /* ascii mnemonic for opcode */
  173.     int _mvi;            /* index into mvalue */
  174.     unsigned char _mvc;      /* number of arrays belonging to mnem */
  175.     unsigned char _nops;    /* number of operands allowed */
  176. };
  177.  
  178. struct _mvalue {
  179.     unsigned char _optyp1;        /* type of first operand */
  180.     unsigned char _optyp2;        /* type of second operand */
  181.     unsigned char _opcb1;        /* first byte of opcode */
  182.     unsigned char _opcb2;        /* second byte of opcode */
  183.     unsigned char _opc_len;        /* number of ext words */
  184.     int (*_p2_action)();        /* code building function */
  185. };
  186.  
  187. struct _ptable {
  188.     char _psdo[8];
  189.     int (*_p1)();
  190.     int (*_p2)();
  191.     int _arg;
  192. };
  193.  
  194. struct _symbol {            /* structure of symbol table */
  195.     char *_sym;
  196.     long _val;
  197.     unsigned char _atr;
  198. };
  199.  
  200.  
  201.